Embedded software development and debugging using processors, such as microcontrollers, can be challenging. Accordingly, many processors include on-chip debug features to facilitate the software development process. Among the most fundamental debug features are program breakpoints. Program breakpoints allow the processor to be halted when software execution reaches a specific address. Once the processor is halted, a debug tool can examine the state of system memory and registers in the processor by issuing instructions to be executed on the processor through a debug protocol. Once the examination is completed, the debug tool can return the CPU to normal mode, and execution will continue until the next breakpoint. Some processors include circuitry to facilitate use of breakpoints. Such “hardware breakpoints” are non-intrusive, and have virtually no impact on software execution until the breakpoint triggers.